<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.7"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>intel-ipsec-mb: gcm_key_data Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">intel-ipsec-mb<span id="projectnumber">&#160;v1.4</span>
   </div>
   <div id="projectbrief">Documentation of the Intel(R) IPSec Multi-Buffer library</div>
  </td>
    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.7 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('structgcm__key__data.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-attribs">Data Fields</a>  </div>
  <div class="headertitle"><div class="title">gcm_key_data Struct Reference</div></div>
</div><!--header-->
<div class="contents">

<p>holds intermediate key data needed to improve performance  
 <a href="structgcm__key__data.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="intel-ipsec-mb_8h_source.html">intel-ipsec-mb.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:aa5bda4f55b8393be151cfe28a9dc1ca9"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structgcm__key__data.html#aa5bda4f55b8393be151cfe28a9dc1ca9">expanded_keys</a> [<a class="el" href="intel-ipsec-mb_8h.html#a0c6f54ab6663187fa401c766a981a41e">IMB_GCM_ENC_KEY_LEN</a> *<a class="el" href="intel-ipsec-mb_8h.html#a73715b8c1ba918ce6d5c21749841b47b">IMB_GCM_KEY_SETS</a>]</td></tr>
<tr class="separator:aa5bda4f55b8393be151cfe28a9dc1ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5adb4225d569050207cfcfe00fe273a"><td class="memItemLeft" >union {&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59cb7987a697909bab91b9f820c8ed49"><td class="memItemLeft" >&#160;&#160;&#160;struct {&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:a908988e25607cd3e092bfcea9964deb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29d30478dd6ef9fc8e752d9219e1ef3f"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;uint8_t&#160;&#160;&#160;<a class="el" href="structgcm__key__data.html#a1c73e3891c50c5e03e82715ceda77d17">shifted_hkey</a> [<a class="el" href="intel-ipsec-mb_8h.html#a0c6f54ab6663187fa401c766a981a41e">IMB_GCM_ENC_KEY_LEN</a> *8]&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:a29d30478dd6ef9fc8e752d9219e1ef3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a659b494f215e7798c485c4aff0901e13"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;uint8_t&#160;&#160;&#160;<a class="el" href="structgcm__key__data.html#a570a82f076ceb5da6719d1a554584820">shifted_hkey_k</a> [<a class="el" href="intel-ipsec-mb_8h.html#a0c6f54ab6663187fa401c766a981a41e">IMB_GCM_ENC_KEY_LEN</a> *8]&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:a659b494f215e7798c485c4aff0901e13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59cb7987a697909bab91b9f820c8ed49"><td class="memItemLeft" valign="top">&#160;&#160;&#160;}&#160;&#160;&#160;<a class="el" href="structgcm__key__data.html#a908988e25607cd3e092bfcea9964deb1">sse_avx</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:a59cb7987a697909bab91b9f820c8ed49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ffb5d0506035ce484d72be7b11f007f"><td class="memItemLeft" >&#160;&#160;&#160;struct {&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:a3f231fdc1d521cd15c111667e4aea818"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb872f75f591f26c311acf146d7c2982"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;uint8_t&#160;&#160;&#160;<a class="el" href="structgcm__key__data.html#a1c73e3891c50c5e03e82715ceda77d17">shifted_hkey</a> [<a class="el" href="intel-ipsec-mb_8h.html#a0c6f54ab6663187fa401c766a981a41e">IMB_GCM_ENC_KEY_LEN</a> *8]&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:afb872f75f591f26c311acf146d7c2982"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ffb5d0506035ce484d72be7b11f007f"><td class="memItemLeft" valign="top">&#160;&#160;&#160;}&#160;&#160;&#160;<a class="el" href="structgcm__key__data.html#a3f231fdc1d521cd15c111667e4aea818">avx2_avx512</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:a5ffb5d0506035ce484d72be7b11f007f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9f7f886acb050fb3d32cb35714d0994"><td class="memItemLeft" >&#160;&#160;&#160;struct {&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:a7ad44e105b23e41b7f79530b6370e509"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cfce3d7b72b0e1dfea5368956a780ca"><td class="memItemLeft" >&#160;&#160;&#160;&#160;&#160;&#160;uint8_t&#160;&#160;&#160;<a class="el" href="structgcm__key__data.html#a1c73e3891c50c5e03e82715ceda77d17">shifted_hkey</a> [<a class="el" href="intel-ipsec-mb_8h.html#a0c6f54ab6663187fa401c766a981a41e">IMB_GCM_ENC_KEY_LEN</a> *32 *2]&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:a3cfce3d7b72b0e1dfea5368956a780ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9f7f886acb050fb3d32cb35714d0994"><td class="memItemLeft" valign="top">&#160;&#160;&#160;}&#160;&#160;&#160;<a class="el" href="structgcm__key__data.html#a7ad44e105b23e41b7f79530b6370e509">vaes_avx512</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:ac9f7f886acb050fb3d32cb35714d0994"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5adb4225d569050207cfcfe00fe273a"><td class="memItemLeft" valign="top">}&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structgcm__key__data.html#af5adb4225d569050207cfcfe00fe273a">ghash_keys</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:af5adb4225d569050207cfcfe00fe273a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>holds intermediate key data needed to improve performance </p>
<p><a class="el" href="structgcm__key__data.html" title="holds intermediate key data needed to improve performance">gcm_key_data</a> hold internal key information used by gcm128, gcm192 and gcm256. </p>
</div><h2 class="groupheader">Field Documentation</h2>
<a id="a3f231fdc1d521cd15c111667e4aea818" name="a3f231fdc1d521cd15c111667e4aea818"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f231fdc1d521cd15c111667e4aea818">&#9670;&#160;</a></span>[struct]</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct  { ... }  gcm_key_data::avx2_avx512</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aa5bda4f55b8393be151cfe28a9dc1ca9" name="aa5bda4f55b8393be151cfe28a9dc1ca9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5bda4f55b8393be151cfe28a9dc1ca9">&#9670;&#160;</a></span>expanded_keys</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t gcm_key_data::expanded_keys[<a class="el" href="intel-ipsec-mb_8h.html#a0c6f54ab6663187fa401c766a981a41e">IMB_GCM_ENC_KEY_LEN</a> *<a class="el" href="intel-ipsec-mb_8h.html#a73715b8c1ba918ce6d5c21749841b47b">IMB_GCM_KEY_SETS</a>]</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="af5adb4225d569050207cfcfe00fe273a" name="af5adb4225d569050207cfcfe00fe273a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5adb4225d569050207cfcfe00fe273a">&#9670;&#160;</a></span>[union]</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">union  { ... }  gcm_key_data::ghash_keys</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a1c73e3891c50c5e03e82715ceda77d17" name="a1c73e3891c50c5e03e82715ceda77d17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c73e3891c50c5e03e82715ceda77d17">&#9670;&#160;</a></span>shifted_hkey</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t gcm_key_data::shifted_hkey[<a class="el" href="intel-ipsec-mb_8h.html#a0c6f54ab6663187fa401c766a981a41e">IMB_GCM_ENC_KEY_LEN</a> *32 *2]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This is needed for schoolbook multiply purposes. (HashKey&lt;&lt;1 mod poly), (HashKey^2&lt;&lt;1 mod poly), ..., (Hashkey^48&lt;&lt;1 mod poly)</p>
<p>Start with: (HashKey&lt;&lt;1 mod poly), (HashKey^2&lt;&lt;1 mod poly), ..., (Hashkey^32&lt;&lt;1 mod poly)</p>
<p>Followed by: (HashKey&lt;&lt;1 mod poly) x POLY, (HashKey^2&lt;&lt;1 mod poly) x POLY, ..., (Hashkey^32&lt;&lt;1 mod poly) x POLY </p>

</div>
</div>
<a id="a570a82f076ceb5da6719d1a554584820" name="a570a82f076ceb5da6719d1a554584820"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a570a82f076ceb5da6719d1a554584820">&#9670;&#160;</a></span>shifted_hkey_k</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t gcm_key_data::shifted_hkey_k[<a class="el" href="intel-ipsec-mb_8h.html#a0c6f54ab6663187fa401c766a981a41e">IMB_GCM_ENC_KEY_LEN</a> *8]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This is needed for Karatsuba multiply purposes. Storage for XOR of High 64 bits and low 64 bits of HashKey mod poly.</p>
<p>(HashKey&lt;&lt;1 mod poly), (HashKey^2&lt;&lt;1 mod poly), ..., (Hashkey^128&lt;&lt;1 mod poly) </p>

</div>
</div>
<a id="a908988e25607cd3e092bfcea9964deb1" name="a908988e25607cd3e092bfcea9964deb1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a908988e25607cd3e092bfcea9964deb1">&#9670;&#160;</a></span>[struct]</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct  { ... }  gcm_key_data::sse_avx</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>&lt; Storage for precomputed hash keys </p>

</div>
</div>
<a id="a7ad44e105b23e41b7f79530b6370e509" name="a7ad44e105b23e41b7f79530b6370e509"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ad44e105b23e41b7f79530b6370e509">&#9670;&#160;</a></span>[struct]</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct  { ... }  gcm_key_data::vaes_avx512</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="intel-ipsec-mb_8h_source.html">intel-ipsec-mb.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="structgcm__key__data.html">gcm_key_data</a></li>
    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7 </li>
  </ul>
</div>
</body>
</html>
